#include "staffclient.h"
//主登录页面
//liu
void do_Main_meun(MSG msg)
{
  int choice;
  while (1)
  {
    printf("*******************************\n");
    printf(" ***1.管理员**2.员工**3.退出***\n");
    printf("*******************************\n");
    printf("input>>");
    scanf("%d", &choice);
    getchar();
    switch (choice)
    {
    case 1:
      do_Administrators(msg);
      break;
    case 2:
      do_Staff(msg);
      break;
    case 3:
      exit(0);
      break;

    default:
      printf("input error！");
      break;
    }
  }
}
//管理员登陆页面
void do_Administrators(MSG msg)
{
  int choice;
  while (1)
  {
    printf("*************************\n");
    printf("   **1.登录**2.退出**\n");
    printf("*************************\n");
    printf("input>>");
    scanf("%d", &choice);
    getchar();
    switch (choice)
    {
    case 1:
      do_Administrators_sign_in(msg);
      break;
    case 2:
      return;
      break;
    default:
      printf("input error");
      break;
    }
  }
}
//管理员登录函数
void do_Administrators_sign_in(MSG msg)
{
  DATA data;
  bzero(&data, sizeof(data));
  data.flat = 1;
  printf("input name>>");
  scanf("%s", data.name);
  printf("input password>>");
  scanf("%s", data.password);
  if (send(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("send error");
  }
  if (recv(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("recv error");
  }
  printf("%s", data.quit);
  if (strcmp("用户名密码正确\n", data.quit) == 0)
  {
    //管理员操作
    do_Administrator_action(msg);
  }
}
//管理员操作页面
void do_Administrator_action(MSG msg)
{
  int choice;
  while (1)
  {
    printf("*************************************************************************\n");
    printf("***1.添加用户**2.删除用户**3.修改用户**4.查询用户信息**5.查询历史**6.退出***\n");
    printf("*************************************************************************\n");

    printf("input>>");
    scanf("%d", &choice);
    getchar();
    switch (choice)
    {
    case 1:
      do_Administrators_add_to(msg);
      break;
    case 2:
      do_Administrators_delete(msg);
      break;
    case 3:
      do_Administrators_modify(msg);
      break;
    case 4:
      do_Administrators_query(msg);
      break;
    case 5:
      do_Administrators_Historical_records(msg);
      break;
    case 6:
      return;
      break;

    default:
      printf("input error");
      break;
    }
  }
}
//管理员添加用户
void do_Administrators_add_to(MSG msg)
{
  DATA data;
  data.flat = 2;
  printf("input name>>");
  scanf("%s", data.name);
  printf("input age>>");
  scanf("%d", &data.age);
  printf("input password>>");
  scanf("%s", data.password);
  printf("input id>>");
  scanf("%d", &data.id);
  printf("input gender>>");
  scanf("%s", data.gender);
  printf("input department>>");
  scanf("%s", data.department);
  printf("input wages>>");
  scanf("%d", &data.wages);
  if (send(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("send error");
  }
  if (recv(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("send error");
  }
  printf("%s", data.quit);
}
//管理员删除用户
void do_Administrators_delete(MSG msg)
{
  DATA data;
  bzero(&data, sizeof(data));
  int choice;
  while (1)
  {
    printf("*********************************************\n");
    printf("***0.返回上一级***1.按工号删除***2.按姓名删除***\n");
    printf("*********************************************\n");
    printf("input>>");
    scanf("%d", &choice);
    getchar();
    if (choice == 1)
    {
      data.flat = 3;
      printf("input id>>");
      scanf("%d", &data.id);
      if (send(msg.acceptfd, &data, sizeof(data), 0) == -1)
      {
        ERRLOG("send error");
      }
      if (recv(msg.acceptfd, &data, sizeof(data), 0) == -1)
      {
        ERRLOG("recv error");
      }
      printf("%s", data.quit);
    }
    else if (choice == 2)
    {
      data.flat = 4;
      printf("input name>>");
      scanf("%s", data.name);
      if (send(msg.acceptfd, &data, sizeof(data), 0) == -1)
      {
        ERRLOG("send error");
      }
      if (recv(msg.acceptfd, &data, sizeof(data), 0) == -1)
      {
        ERRLOG("recv error");
      }
      printf("%s", data.quit);
    }
    else if (choice == 0)
    {
      return;
    }
    else
    {
      printf("输入错误,请重试\n");
    }
  }
}

//管理员修改用户
void do_Administrators_modify(MSG msg)
{
  int choice;
  DATA data;
  data.flat = 5;
  printf("input id >>");
  scanf("%d", &data.id);
  if (send(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("send error");
  }
  if (recv(msg.acceptfd, &data, sizeof(data), 0) == -1)
  {
    ERRLOG("recv error");
  }
  printf("%s", data.quit);
  if (strcmp("查找到此人\n", data.quit) == 0)
  {
    int choose;
    printf("| name | age | gender | password | id | department | wages | \n");
    printf("%s", data.information);
    bzero(&data, sizeof(data));
    while (1)
    {
      printf("输入[0]返回上一级\n");
      printf("1.name\n");
      printf("2.age\n");
      printf("3.password\n");
      printf("4.gender\n");
      printf("5.id\n");
      printf("6.wages\n");
      printf("7.department\n");
      printf("\n");
      printf("inpout>>");
      scanf("%d", &choose);
      getchar();
      switch (choose)
      {
      case 0:
        data.flat = 0;
        send(msg.acceptfd, &data, sizeof(data), 0);
        return;
        break;
      case 1:
        data.flat = 1;
        printf("new name >>");
        scanf("%s", data.name);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        break;
      case 2:

        data.flat = 2;
        printf("new age >>");
        scanf("%d", &data.age);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        break;
      case 3:
        data.flat = 3;
        printf("new password >>");
        scanf("%s", data.password);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      case 4:
        data.flat = 4;
        printf("new gender and >>");
        scanf("%s", data.gender);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      case 5:
        data.flat = 5;
        printf("new id >>");
        scanf("%d", &data.id);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      case 6:
        data.flat = 6;
        printf("new wages >>");
        scanf("%d", &data.wages);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      case 7:
        data.flat = 7;
        printf("new department >>");
        scanf("%s", data.department);
        // scanf("%d", &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      default:
        printf("输入错误,请重试\n");
        break;
      }
    }
  }
}

//管理员查询用户
void do_Administrators_query(MSG msg)
{
  DATA data;
  data.flat = 6;
  int choice;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("%s", data.quit);
  if (strcmp(data.quit, "输入你的选项\n") == 0)
  {
    while (1)
    {
      printf("0.返回上一级\n");
      printf("1.查询所有用户\n");
      printf("2.前10个用户\n");
      printf("3.后10个用户\n");
      printf("4.条件查询例如[1-100](前一百个用户)\n");
      printf("input>>");
      scanf("%d", &choice);
      switch (choice)
      {
      case 0:
        data.flat = 0;
        send(msg.acceptfd, &data, sizeof(data), 0);
        return;
        break;
      case 1:
        data.flat = 1;
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }
        break;
      case 2:
        data.flat = 2;
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("name\tage\tgender\tpassword\tid\tdepartment\twages\t\n");
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }
        break;
      case 3:
        data.flat = 3;
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("name\tage\tgender\tpassword\tid\tdepartment\twages\t\n");
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }
        break;
      case 4:
        data.flat = 4;
        printf("input condition [0-100]>>");
        scanf("%d-%d", &data.age, &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("name\tage\tgender\tpassword\tid\tdepartment\twages\t\n");
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }

        break;
      default:
        printf("错误请重新输入\n");
        break;
      }
    }
  }
}

//管理员查询历史记录
void do_Administrators_Historical_records(MSG msg)
{
  DATA data;
  int choice;
  data.flat = 7;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("%s", data.quit);
  if (strcmp(data.quit, "开始查询\n") == 0)
  {
    while (1)
    {
      printf("0.返回上一级\n");
      printf("1.查询所有消息\n");
      printf("2.前50条消息\n");
      printf("3.条件查询例如[1-100](前一百个用户)\n");
      printf("input>>");
      scanf("%d", &choice);
      switch (choice)
      {
      case 0:
        data.flat = 0;
        send(msg.acceptfd, &data, sizeof(data), 0);
        return;
        break;
      case 1:
        data.flat = 1;
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }
        break;
      case 2:
        data.flat = 2;
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("| name | time |\n");
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }
        break;
      case 3:
        data.flat = 3;
        printf("input condition [0-100]>>");
        scanf("%d-%d", &data.age, &data.id);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("| name | time |\n");
        printf("%s", data.quit);
        while (data.flats == 1)
        {
          recv(msg.acceptfd, &data, sizeof(data), 0);
          printf("%s", data.quit);
        }

        break;
      default:
        printf("输入错误请重试\n");
        break;
      }
    }
  }
}

//用户主页面
void do_Staff(MSG msg)
{
  int choice;
  while (1)
  {
    printf("***************************\n");
    printf("***1.注册**2.登录**3.退出**\n");
    printf("***************************\n");
    printf("input>>");
    scanf("%d", &choice);
    getchar();
    switch (choice)
    {
    case 1:
      do_Staff_register(msg);
      break;
    case 2:
      do_Staff_sign_in(msg);
      break;
    case 3:
      return;
      break;

    default:
      printf("input error");
      break;
    }
  }
}
//用户注册函数
void do_Staff_register(MSG msg)
{
  DATA data;
  data.flat = 8;
  printf("input name>>");
  scanf("%s", data.name);
  printf("input password>>");
  scanf("%s", data.password);
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("%s", data.quit);
}

//用户登录函数
void do_Staff_sign_in(MSG msg)
{
  DATA data;
  data.flat = 9;
  printf("input name>>");
  scanf("%s", data.name);
  printf("input password>>");
  scanf("%s", data.password);
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("%s", data.quit);
  if (data.flat == 1)
  {
    int choice;
    while (1)
    {
      printf("*****************************************************************\n");
      printf("***1.查询信息  2.修改密码  3.修改个人信息  4.查询历史记录  5.退出***\n");
      printf("*****************************************************************\n");
      printf("input>>");
      scanf("%d", &choice);
      getchar();
      switch (choice)
      {
      case 1:
        //用户查询信息
        do_Staff_query(msg);
        break;
      case 2:
        //用户修改密码
        do_Staff_modify(msg);
        break;
      case 3:
        //用户修改个人信息
        do_Staff_modify_personal(msg);
        break;
      case 4:
        //用户查询历史记录
        do_Staff__Historical_records(msg);
        break;
      case 5:
        data.flat = 0;
        send(msg.acceptfd, &data, sizeof(data), 0);
        // printf("%s", data.quit);
        return;
        break;

      default:
        printf("input error");
        break;
      }
    }
  }
}

//用户查询信息
void do_Staff_query(MSG msg)
{
  DATA data;
  data.flat = 1;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  // printf("%s", data.quit);
  if (data.flat == 0)
  {
    printf("input id >> ");
    scanf("%d", &data.id);
    send(msg.acceptfd, &data, sizeof(data), 0);
    recv(msg.acceptfd, &data, sizeof(data), 0);
    printf("%s", data.quit);
    if (strcmp(data.quit, "未查到此人\n") != 0)
    {
      recv(msg.acceptfd, &data, sizeof(data), 0);
      printf("%s", data.quit);
    }
  }
}
//用户修改密码
void do_Staff_modify(MSG msg)
{
  char new_password[N] = {0};
  DATA data;
  data.flat = 2;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("%s", data.quit);
  while (1)
  {
    printf("input new password>>\n");
    scanf("%s", new_password);
    scanf("%s", data.password);
    if (strcmp(data.password, new_password) == 0)
    {
      printf("data=%s", data.password);
      send(msg.acceptfd, &data, sizeof(data), 0);
      recv(msg.acceptfd, &data, sizeof(data), 0);
      printf("%s", data.quit);
      return;
    }
    else
    {
      printf("输入错误\n");
    }
  }
}
//用户修改个人信息
void do_Staff_modify_personal(MSG msg)
{
  int choice;
  DATA data;
  data.flat = 3;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  if (data.flat == 0)
  {
    while (1)
    {
      printf("0.返回\n");
      printf("1.姓名\n");
      printf("2.年龄\n");
      printf("3.姓别\n");
      scanf("%d", &choice);
      getchar();
      switch (choice)
      {
      case 0:
        data.flat = -1;
        send(msg.acceptfd, &data, sizeof(data), 0);
        return;
        break;
      case 1:
        data.flat = 1;
        printf("input new name>>");
        scanf("%s", data.name);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        break;
      case 2:
        data.flat = 2;
        printf("input new age>>");
        scanf("%d", &data.age);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);

        break;
      case 3:
        data.flat = 3;
        printf("input new Gender>>");
        scanf("%s", data.gender);
        send(msg.acceptfd, &data, sizeof(data), 0);
        recv(msg.acceptfd, &data, sizeof(data), 0);
        printf("%s", data.quit);
        break;
      default:
        printf("错误：请重新输入\n");
        break;
      }
    }
  }
}
//用户查询历史记录
void do_Staff__Historical_records(MSG msg)
{
  DATA data;
  data.flat = 4;
  send(msg.acceptfd, &data, sizeof(data), 0);
  recv(msg.acceptfd, &data, sizeof(data), 0);
  printf("登录时间为：%s\n", data.quit);
}
